name: original workflow, outdated # *** YES, OUTDATED *** kept for hystorical/reference purposes, attachment, etc.
on:
  workflow_dispatch:
env:
  IPV6: 0
jobs:
  linux:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        cc: [gcc, clang, g++, clang++]
        target: [test, mip_test]
        ssl: ["", MBEDTLS, OPENSSL]
        select: ["-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0", "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0", "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=1"]
        exclude:
        - ssl: MBEDTLS
          select: "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0"
        - ssl: MBEDTLS
          select: "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0"
        - ssl: OPENSSL
          select: "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0"
        - ssl: OPENSSL
          select: "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0"
    name: linux ${{ matrix.target }} CC=${{ matrix.cc }} SSL=${{ matrix.ssl }} TFLAGS=${{ matrix.select }}
    env:
      CC: ${{ matrix.cc }}
      SSL: ${{ matrix.ssl }}
      TFLAGS: ${{ matrix.select }}
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi
    - if: ${{ env.GO == 1 }}
      run: ./test/setup_ga_network.sh && sudo apt -y update ; sudo apt -y install libmbedtls-dev && make ${{ matrix.target }}
  s390:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi
    - if: ${{ env.GO == 1 }}
      run: sudo apt -y update ; sudo apt -y install qemu binfmt-support qemu-user-static && docker run --rm --privileged multiarch/qemu-user-static --reset -p yes && make s390
  armhf:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi
    - if: ${{ env.GO == 1 }}
      run: sudo apt -y update ; sudo apt -y install qemu binfmt-support qemu-user-static && docker run --rm --privileged multiarch/qemu-user-static --reset -p yes && make armhf
  linux2:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi
    - if: ${{ env.GO == 1 }}
      run: sudo apt -y update ; sudo apt -y install libmbedtls-dev valgrind
    - if: ${{ env.GO == 1 }}
      run: make unamalgamated && make valgrind && make mg_prefix
  macos:
    runs-on: macos-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", MBEDTLS, OPENSSL]
        select: [-DMG_ENABLE_POLL=0, -DMG_ENABLE_POLL=1]
        exclude:
        - ssl: MBEDTLS
          select: -DMG_ENABLE_POLL=0
        - ssl: OPENSSL
          select: -DMG_ENABLE_POLL=0
    name: macos SSL=${{ matrix.ssl }} TFLAGS=${{ matrix.select }}
    env:
      SSL: ${{ matrix.ssl }}
      TFLAGS: ${{ matrix.select }} -DNO_SNTP_CHECK -Wno-sign-conversion # Workaround for MbedTLS 3.5.0
      HOMEBREW_NO_AUTO_UPDATE: 1
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi
    - if: ${{ env.GO == 1 }}
      run: brew install jq mbedtls openssl
    - if: ${{ env.GO == 1 }}
      run:  make test ASAN_OPTIONS= MBEDTLS=`echo /usr/local/Cellar/mbedtls*/*` OPENSSL=`echo /usr/local/Cellar/openssl*/*`
    - if: ${{ env.GO == 1 }}
      run: make mg_prefix
  windows:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        target: [vc98, vc17, vc22, mingw, mingw++]
        select: [-DMG_ENABLE_POLL=0, -DMG_ENABLE_POLL=1]
        exclude:
        - target: vc98
          select: -DMG_ENABLE_POLL=1
    name: windows ${{ matrix.target }} TFLAGS=${{ matrix.select }}
    env:
      TFLAGS: ${{ matrix.select }}
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi
    - if: ${{ env.GO == 1 }}
      run: make ${{ matrix.target }} 
  arm:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: make arm
  riscv:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: make riscv

  examples:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: sudo apt -y install libmbedtls-dev libpcap-dev
    - run: make examples
    - run: make clean
  examples_win:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v3
#    - uses: egor-tensin/setup-mingw@v2
#      with:
#        platform: x64
    - name: test they build
      run: make examples_win
      shell: cmd
    - name: test they clean
      run: make clean_examples_win
      shell: cmd
  examples_mac:
    runs-on: macos-latest
    env: { HOMEBREW_NO_AUTO_UPDATE: 1 }
    steps:
    - uses: actions/checkout@v3
    - run: make examples_mac
    - run: make clean_examples_mac


  arduino:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/arduino" ; then
          echo GO=1 >> $GITHUB_ENV
          # nothing specific to install or do
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/arduino'; then
          make -C examples/arduino arduino-xiao
        fi
#    - if: ${{ env.GO == 1 }}
#      run: |
#        if ./test/match_changed_files.sh '^src|examples/arduino'; then
#          make -C examples/arduino arduino-nano
#        fi
    - if: ${{ env.GO == 1 }}
      run: make -C examples/arduino clean


  generic_examples:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: esp32/uart-bridge
          - path: esp32/micropython
          - path: esp8266/http-client-server
    name: ${{ matrix.example.path }}
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: if ./test/match_changed_files.sh '^src|^examples/${{ matrix.example.path }}'; then echo GO=1 >> $GITHUB_ENV ; fi
      - if: ${{ env.GO == 1 }}
        run: |
          # nothing specific to install or do
      - if: ${{ env.GO == 1 }}
        run: make -C examples/${{ matrix.example.path }} build
  
  generic_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: microchip/same54-xpro/mqtt-client
          - path: infineon/infineon-xmc4700_4800-lwip-rtx-rtos
          - path: nxp/nxp-mimxrt1020-azurertos
          - path: nxp/nxp-frdmk66f-freertos
          - path: nxp/nxp-lpcxpresso54s018m-freertos
          - path: nxp/nxp-mimxrt1020-freertos
          - path: nxp/nxp-evkbimxrt1050-lwip-freertos
          - path: nxp/nxp-evkmimxrt1020-lwip-freertos
          - path: nxp/nxp-evkmimxrt1024-lwip-freertos
          - path: nxp/nxp-evkmimxrt1060-lwip-freertos
          - path: nxp/nxp-evkmimxrt1064-lwip-freertos
          - path: nxp/nxp-evkmimxrt1160-cm7-lwip-freertos
          - path: nxp/nxp-evkmimxrt1170-cm7-lwip-freertos
          - path: nxp/nxp-frdmk64f-lwip-freertos
          - path: nxp/nxp-frdmk66f-lwip-freertos
          - path: nxp/nxp-lpcxpresso54018-lwip-freertos
          - path: nxp/nxp-lpcxpresso54608-lwip-freertos
          - path: nxp/nxp-lpcxpresso54618-lwip-freertos
          - path: nxp/nxp-lpcxpresso54628-lwip-freertos
          - path: nxp/nxp-twrk65f180m-lwip-freertos
          - path: nxp/nxp-twrkv58f220m-lwip-freertos
          - path: rp2040/pico-rmii
          - path: stm32/nucleo-f429zi-make-baremetal-builtin-rndis
          - path: stm32/nucleo-f746zg-make-baremetal-builtin-rndis
          - path: stm32/nucleo-g031-make-baremetal-builtin
          - path: ti/ti-ek-tm4c1294xl-http-server
          - path: ti/ek-tm4c1294xl-make-baremetal-builtin-rndis
    name: ${{ matrix.example.path }}
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: if ./test/match_changed_files.sh '^src|^examples/${{ matrix.example.path }}'; then echo GO=1 >> $GITHUB_ENV ; fi
      - if: ${{ env.GO == 1 }}
        run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
      - if: ${{ env.GO == 1 }}
        run: make -C examples/${{ matrix.example.path }} build

  device_dashboard_examples:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: esp32/device-dashboard
    name: ${{ matrix.example.path }}
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: |
          if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then
            echo GO=1 >> $GITHUB_ENV
            # nothing specific to install or do
          fi
      - if: ${{ env.GO == 1 }}
        run: make -C examples/${{ matrix.example.path }} build

  device_dashboard_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: microchip/same54-xpro/device-dashboard
          - path: nxp/rt1020-evk-make-baremetal-builtin
          - path: nxp/rt1020-evk-make-freertos-builtin
          - path: nxp/rt1060-evk-make-baremetal-builtin
          - path: nxp/rt1060-evk-make-freertos-builtin
          - path: rp2040/pico-rndis-dashboard
          - path: rp2040/pico-w
          - path: rp2040/pico-w5500
          - path: stm32/nucleo-f429zi-make-baremetal-builtin
          - path: stm32/nucleo-f429zi-make-freertos-builtin
          - path: stm32/nucleo-f746zg-make-baremetal-builtin
          - path: stm32/nucleo-f746zg-make-freertos-builtin
          - path: stm32/nucleo-f746zg-make-freertos-tcp
          - path: stm32/nucleo-f746zg-make-baremetal-builtin-cmsis_driver
          - path: stm32/nucleo-h563zi-make-baremetal-builtin
          - path: stm32/nucleo-h563zi-make-freertos-builtin
          - path: stm32/nucleo-h723zg-make-freertos-builtin
          - path: stm32/nucleo-h743zi-make-baremetal-builtin
          - path: stm32/nucleo-h743zi-make-freertos-builtin
          - path: stm32/stm32h573i-dk-make-baremetal-builtin
          - path: stm32/stm32h573i-dk-make-freertos-builtin
          - path: ti/ek-tm4c1294xl-make-baremetal-builtin
          - path: ti/ek-tm4c1294xl-make-freertos-builtin
    name: ${{ matrix.example.path }}
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: |
          if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then
            echo GO=1 >> $GITHUB_ENV
            sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
          fi
      - if: ${{ env.GO == 1 }}
        run: make -C examples/${{ matrix.example.path }} build

#  mqtt_dashboard_examples:
#    runs-on: ubuntu-latest
#    strategy:
#      fail-fast: false
#      matrix:
#        example:
#          - path: 
#    name: ${{ matrix.example.path }}
#    env:
#      GO: 0
#    steps:
#      - uses: actions/checkout@v3
#        with: { fetch-depth: 2 }
#      - run: |
#          if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then
#            echo GO=1 >> $GITHUB_ENV
#            # nothing specific to install or do
#          fi
#      - if: ${{ env.GO == 1 }}
#        run: make -C examples/${{ matrix.example.path }} build
      
  mqtt_dashboard_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: rp2040/pico-rndis-device
    name: ${{ matrix.example.path }}
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: |
          if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then
            echo GO=1 >> $GITHUB_ENV
            sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
          fi
      - if: ${{ env.GO == 1 }}
        run: make -C examples/${{ matrix.example.path }} build
      
#  dual_examples:
#    runs-on: ubuntu-latest
#    strategy:
#      fail-fast: false
#      matrix:
#        example:
#          - path: 
#    name: ${{ matrix.example.path }}
#    env:
#      GO: 0
#    steps:
#      - uses: actions/checkout@v3
#        with: { fetch-depth: 2 }
#      - run: |
#          if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then
#            echo GO=1 >> $GITHUB_ENV
#            # nothing specific to install or do
#          fi
#      - if: ${{ env.GO == 1 }}
#        run: |
#          if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then
#            make -C examples/${{ matrix.example.path }} device_dashboard
#          fi
#      - if: ${{ env.GO == 1 }}
#        run: |
#          if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then
#            make -C examples/${{ matrix.example.path }} mqtt_dashboard
#          fi

  dual_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: stm32/nucleo-h723zg-make-baremetal-builtin
    name: ${{ matrix.example.path }}
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: |
          if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then
            echo GO=1 >> $GITHUB_ENV
            sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
          fi
      - if: ${{ env.GO == 1 }}
        run: |
          if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then
            make -C examples/${{ matrix.example.path }} device_dashboard
          fi
      - if: ${{ env.GO == 1 }}
        run: |
          if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then
            make -C examples/${{ matrix.example.path }} mqtt_dashboard
          fi

  cube_examples:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: |
          if ./test/match_changed_files.sh '^src|examples/stm32/nucleo-*-cube-*'; then
            echo GO=1 >> $GITHUB_ENV
            # nothing specific to install or do
          fi
      - if: ${{ env.GO == 1 }}
        run: cd test/cube && make

  zephyr_examples:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v3
        with: { fetch-depth: 2 }
      - run: |
          if ./test/match_changed_files.sh '^src/.*.[ch]|^examples/zephyr'; then
            echo GO=1 >> $GITHUB_ENV
            sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
            fi
      - if: ${{ env.GO == 1 }}
        run: make -C examples/zephyr init
      - name: minify manifest
        if: ${{ env.GO == 1 }}
        uses: mikefarah/yq@master
        with:
          cmd: yq -i eval '(.manifest.defaults, .manifest.remotes, .manifest.projects[] | select(.name == "cmsis" or .name == "hal_stm32" or .name == "mbedtls" or .name == "mcuboot" or .name == "picolibc" | del(.null) ), .manifest.self) as $i ireduce({};setpath($i | path; $i)) | del(.manifest.projects.[].null) | del(..|select(length==0))' examples/zephyr/zephyrproject/zephyr/west.yml
      - if: ${{ env.GO == 1 }}
        run: make -C examples/zephyr update
      - if: ${{ env.GO == 1 }}
        run: make -C examples/zephyr/device-dashboard build
      - if: ${{ env.GO == 1 }}
        run: make -C examples/zephyr/http-client build
      - if: ${{ env.GO == 1 }}
        run: make -C examples/zephyr/http-server build
      - if: ${{ env.GO == 1 }}
        run: make -C examples/zephyr/mqtt-aws-client build
      - if: ${{ env.GO == 1 }}
        run: make -C examples/zephyr/websocket-server build

  test_f7:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-f7.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-make-baremetal-builtin'; then
          make -C examples/stm32/nucleo-f746zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-make-freertos-builtin'; then
          make -C examples/stm32/nucleo-f746zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-make-freertos-tcp'; then
          make -C examples/stm32/nucleo-f746zg-make-freertos-tcp test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - name: Cube
      run: |
        echo GO=0 >> $GITHUB_ENV
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f7.*-cube-'; then
          echo GO=1 >> $GITHUB_ENV
          # nothing specific to install or do
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-cube-baremetal-builtin'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-cube-freertos-builtin'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5    
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-cube-freertos-lwip'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5
        fi


  test_f4:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-f4.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-make-baremetal-builtin'; then
          make -C examples/stm32/nucleo-f429zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-make-freertos-builtin'; then
          make -C examples/stm32/nucleo-f429zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - name: Cube
      run: |
        echo GO=0 >> $GITHUB_ENV
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f4.*-cube-'; then
          echo GO=1 >> $GITHUB_ENV
          # nothing specific to install or do
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-cube-baremetal-builtin'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-cube-freertos-builtin'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-cube-freertos-lwip'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2
        fi

  test_h743:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 3 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h74.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-make-baremetal-builtin'; then
        make -C examples/stm32/nucleo-h743zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-make-freertos-builtin'; then
          make -C examples/stm32/nucleo-h743zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - name: Cube
      run: |
        echo GO=0 >> $GITHUB_ENV
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h74.*-cube-'; then
          echo GO=1 >> $GITHUB_ENV
          # nothing specific to install or do
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-cube-baremetal-builtin'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-cube-freertos-builtin'; then
          make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6
        fi

  test_h723:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 3 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h72.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h723zg-make-baremetal-builtin'; then
          make -C examples/stm32/nucleo-h723zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h723zg-make-freertos-builtin'; then
          make -C examples/stm32/nucleo-h723zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    
  test_h5:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 3 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h5.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h563zi-make-baremetal-builtin'; then
          make -C examples/stm32/nucleo-h563zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h563zi-make-freertos-builtin'; then
          make -C examples/stm32/nucleo-h563zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi

  test_rt1020:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 3 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/nxp/rt1020.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        #if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1020-evk-make-baremetal-builtin'; then
        if ./test/match_changed_files.sh '^src|examples/nxp/rt1020-evk-make-baremetal-builtin'; then
          make -C examples/nxp/rt1020-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        #if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1020-evk-make-freertos-builtin'; then
        if ./test/match_changed_files.sh '^src|examples/nxp/rt1020-evk-make-freertos-builtin'; then
          make -C examples/nxp/rt1020-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi

  test_rt1060:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 3 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/nxp/rt1060.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1060-evk-make-baremetal-builtin'; then
          make -C examples/nxp/rt1060-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi
    - if: ${{ env.GO == 1 }}
      run: |
        if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1060-evk-make-freertos-builtin'; then
          make -C examples/nxp/rt1060-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
        fi

  test_tm4c:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/ti/ek-tm4c.*-make-" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run:  make -C examples/ti/ek-tm4c1294xl-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - if: ${{ env.GO == 1 }}
      run:  make -C examples/ti/ek-tm4c1294xl-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_same54:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - name: baremetal
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/microchip/same54-xpro" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run:  make -C examples/microchip/same54-xpro/device-dashboard test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - if: ${{ env.GO == 1 }}
      run:  make -C examples/microchip/same54-xpro/mqtt-client test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_pico_w5500:
    runs-on: ubuntu-latest
    env:
      GO: 0
    steps:
    - uses: actions/checkout@v3
      with: { fetch-depth: 2 }
    - name: SDK
      run: |
        if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/rp2040/pico-w5500" ; then
          echo GO=1 >> $GITHUB_ENV
          sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
        fi
    - if: ${{ env.GO == 1 }}
      run:  make -C examples/rp2040/pico-w5500 test VCON_API_KEY=${{secrets.VCON_API_KEY}}

